'''''''''
单线程异步模型：适用于IO密集场景
发现使用asyncio所的时间与多线程几乎一致。尽管它是单线程，但因为它没有多线程和进程的创建成本，
就是在单线程环境下，切换任务，当这个任务被阻塞时，立刻切换其他任务，当前面的任务完成时，在通知它。
'''''''''

import asyncio
import time

from logger import Logger
logger = Logger("asyncSingleThread").get_log()

async def singleTask(t):
    logger.info("任务开始：%s",t)
    await asyncio.sleep(1)
    logger.info('任务耗时1秒钟')

async def main(loop):
    tasks = [loop.create_task(singleTask(t)) for t in range(0, 10)]
    await asyncio.wait(tasks)

t4 = time.time()
loop = asyncio.get_event_loop()  # 建立 loop
loop.run_until_complete(main(loop))  # 执行 loop
loop.close()  # 关闭 loop
logger.info("总共耗时：%s ", time.time() - t4)